Skip to content

Conversation

@hhhoppe
Copy link

@hhhoppe hhhoppe commented Dec 25, 2025

Задание

Задача: Гиперкуб
Вариант: 10
Технология: MPI (с поддержкой SEQ для последовательной версии)

Описание

В рамках работы реализованы последовательная и параллельная версии алгоритма передачи данных между процессами по топологии гиперкуба.

Последовательная версия (SEQ) моделирует передачу данных в одном процессе и используется в качестве эталона для проверки корректности параллельной реализации.

Параллельная версия (MPI) реализует передачу сообщения между произвольными процессами source и dest в соответствии с топологией гиперкуба. Маршрут передачи вычисляется на основе XOR-разности рангов процессов, что позволяет на каждом шаге переходить к соседнему узлу, отличающемуся ровно одним битом. Передача выполняется только с использованием базовых операций MPI_Send и MPI_Recv без применения встроенных средств создания топологий MPI.

Процесс-отправитель формирует вектор данных, который последовательно пересылается по рассчитанному пути. Процесс-получатель выполняет суммирование элементов и рассылает результат всем процессам.

Ключевые особенности

  • Реализованы SEQ и MPI версии алгоритма
  • Передача данных по топологии гиперкуба без использования MPI_Cart_create и MPI_Graph_create
  • Вычисление маршрута на основе XOR-битовых операций
  • Использование только MPI_Send и MPI_Recv для обмена
  • Корректная обработка случаев source == dest и произвольного числа процессов
  • Сравнение результатов SEQ и MPI в функциональных тестах
  • Наличие функциональных и производительных тестов

Тестирование и производительность

Добавлены функциональные тесты для проверки корректности передачи данных между различными парами процессов, а также тесты производительности для оценки времени работы MPI-версии при увеличении числа процессов.


  • Статус CI: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
  • Директория и именование задачи: Я создал директорию с именем <фамилия><первая_буква_имени><короткое_название_задачи>
  • Полное описание задачи: Я предоставил полное описание задачи в теле pull request
  • clang-format: Мои изменения успешно проходят clang-format локально в моем форке (нет ошибок форматирования)
  • clang-tidy: Мои изменения успешно проходят clang-tidy локально в моем форке (нет предупреждений/ошибок)
  • Функциональные тесты: Все функциональные тесты успешно проходят локально на моей машине
  • Тесты производительности: Все тесты производительности успешно проходят локально на моей машине
  • Ветка: Я работаю в ветке, названной точно так же, как директория моей задачи (например, nesterov_a_vector_sum), а не в master
  • Правдивое содержание: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и достоверными

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant